package zju.dgm.service.region;

import zju.dgm.dto.ServerInfo;
import zju.dgm.dto.RegionMapInfo;

import java.util.Map;
import java.util.List;

public interface RegionUtilProvider {
    /**
     * 得到region对应server的map
     * @return region对应server的表
     * @throws Exception
     */
    Map<String, List<ServerInfo>> getRegionMap() throws Exception;

    /**
     * 检查版本号，返回最新版本的map
     * @param version 版本号
     * @return 版本相同时返回null，不同时返回最新的map及版本号
     * @throws Exception
     */
    RegionMapInfo<String, ServerInfo> checkVersion(int version) throws Exception;

    /**
     * 添加新的region，为其分配server并返回
     * @param regionName 表名
     * @return 分配的server表
     * @throws Exception
     */
    List<ServerInfo> addNewRegion(String regionName) throws Exception;

    /**
     * 确认添加成功后，更新region对应server的map
     * @param regionName 表名
     * @param serverList server列表
     * @throws Exception
     */
    void addConfirm(String regionName, List<ServerInfo> serverList) throws Exception;

    /**
     * 删除指定region
     * @param regionName 表名
     * @throws Exception
     */
    void deleteRegion(String regionName) throws Exception;
}
